package model

//用户实例
type User struct {
}

//管理员实例
type Admin struct {
}

//用户基本信息
type Info struct {
	ID       string `json:"user_id"`
	User     string `json:"user_name"` //用户昵称
	Password string `json:"user_pwd"`
	Email    string `json:"user_email"` //用户邮箱地址，如“xxxx@xxx.com”
	Type     string `json:"user_type"`  //用户类型，管理员为0,普通用户为1，普通用户封禁状态为2
}

//用于接受用户登录时的参数
type ReceiveLogin struct {
	UserEmail    string `json:"user_email"`
	UserPassword string `json:"user_pwd"`
}

//用户操作是否成功
type Success struct {
	Succeed bool `json:"succeed"`
}

//用户登录返回字段
type LoginData struct {
	Type   int    `json:"type"`
	UserID string `json:"user_id"`
}

//用于接收用户id
type UserID struct {
	UserID int `json:"user_id"`
}

//用于接收用户邮箱
type UserEmail struct {
	UserEmail string `json:"user_email"`
}

//用于接收用户禁用IP地址时的参数
type ForbidIP struct {
	IP string `json:"ip"`
}

//用于管理员禁用用户收发邮件服务
type ForbidService struct {
	UserID  int    `json:"user_id"`
	Operate string `json:"operate"`
	Type    string `json:"type"` //"smtp"或"pop"
}

//用于在数据库中插入服务器禁用的IP
type ForbiddenIP struct {
	IP string `gorm:"Column:address;Type:varchar(16);NOT NULL"`
}

//用于在数据库中创建用户
type Users struct {
	UserName   string `gorm:"Column:user_name;Type:varchar(30);NOT NULL"`
	UserPwd    string `gorm:"Column:user_passwd;Type:varchar(255);NOT NULL"`
	UserType   int    `gorm:"Column:user_type;Type:int;NOT NULL"`
	UserEmail  string `gorm:"Column:user_email;Type:varchar(30);NOT NULL"`
	SMTPStatus string `gorm:"Column:smtp_state;Type:char(1);NOT NULL"`
	POPStatus  string `gorm:"Column:pop_state;Type:char(1);NOT NULL"`
}

//获取用户信息
type UserInfo struct {
	UserId     int    `json:"user_id"`
	UserName   string `json:"user_name"`
	UserPwd    string `json:"user_pwd"`
	UserType   int    `json:"user_type"`
	UserEmail  string `json:"user_email"`
	SMTPStatus string `json:"smtp_status"`
	POPStatus  string `json:"pop_status"`
}

//管理员查看用户列表
type UserList struct {
	UserID    int    `json:"user_id"`
	UserName  string `json:"user_name"`
	UserEmail string `json:"user_email"`
	UserType  string `json:"user_type"`
}

//用于在数据库中保存邮件
type UserMails struct {
	EmailID      int    `json:"email_id"`
	UserMail     string `json:"user_mail"`
	EmailFrom    string `json:"email_from"`
	EmailTo      string `json:"email_to"`
	EmailSubject string `json:"email_subject"`
	EmailContent string `json:"email_content"`
	EmailSize    int    `json:"email_size"`
	EmailTime    string `json:"email_time"`
}

//用于在数据库中保存邮件
type UserMail struct {
	UserMail     string `gorm:"Column:user_email;Type:varchar(30);NOT NULL"`
	EmailFrom    string `gorm:"Column:email_from;Type:varchar(30);NOT NULL"`
	EmailTo      string `gorm:"Column:email_to;Type:varchar(30);NOT NULL"`
	EmailSubject string `gorm:"Column:email_subject;Type:varchar(255);NOT NULL"`
	EmailContent string `gorm:"Column:email_content;Type:text;NOT NULL"`
	EmailSize    int    `gorm:"Column:email_size;Type:bigint(20);DEFAULT NULL"`
	EmailRead    string `gorm:"Column:email_read;Type:char(1);NOT NULL"`
	EmailFromDel string `gorm:"Column:email_from_del;Type:char(1);NOT NULL"`
	EmailToDel   string `gorm:"Column:email_to_del;Type:char(1);NOT NULL"`
	EmailTime    string `gorm:"Column:email_time;Type:datetime;NOT NULL"`
}

//用于接收用户删除发件箱邮件的参数
type DeleteSentMail struct {
	Email  string `json:"email"`
	MailID int    `json:"mail_id"`
}

//用于接受用户修改信息时的参数
type ReceiveChange struct {
	UserID   int    `json:"user_id"`
	UserName string `json:"user_name"`
}

//用于接受用户修改密码时的参数
type ReceiveChangePwd struct {
	UserID      int    `json:"user_id"`
	OldPassword string `json:"old_pwd"`
	NewPassword string `json:"new_pwd"`
}

//控制邮件服务的启停
type Server struct {
	SmtpStat string `gorm:"Column:smtp_on;Type:char(1);NOT NULL"`
	SmtpPort int    `gorm:"Column:smtp_port;Type:int;NOT NULL"`
	POPStat  string `gorm:"Column:pop_on;Type:char(1);NOT NULL"`
	POPPort  int    `gorm:"Column:pop_port;Type:int;NOT NULL"`
}

//服务器启停状态
type ServerStatus struct {
	SmtpStat string `json:"smtp_stat"`
	PopStat  string `json:"pop_stat"`
}
